SPB Git forge

spb/immbot-ai

Public
1commits 1branches 0releases
1.5 MBsize
maindefault branch
20 days agolast push
TypeScript 98.3% CSS 0.9% Shell 0.7%
1.2 KB · 35 lines tsx
Raw Blame History
1// Layout serveur des pages de cours : validation du cours, vérification de2// l'inscription, sous-navigation horizontale.3import { notFound, redirect } from "next/navigation";4import { currentUser } from "@/lib/auth/session.ts";5import { get } from "@/lib/db/index.ts";6import { CourseNav } from "@/components/learning/course-nav";78export default async function CourseLayout({9  children,10  params,11}: {12  children: React.ReactNode;13  params: Promise<{ course: string }>;14}) {15  const { course } = await params;16  const slug = course.toLowerCase();17  if (slug !== "imm1003" && slug !== "imm1033") notFound();18  const code = slug.toUpperCase();1920  const user = await currentUser();21  if (!user) redirect("/connexion");2223  const enrolled = get("SELECT 1 as ok FROM enrollments WHERE user_id = ? AND course_code = ?", user.id, code);24  if (!enrolled) redirect("/apprendre");2526  const row = get<{ title: string; color: string }>("SELECT title, color FROM courses WHERE code = ?", code);2728  return (29    <div className="flex-1 flex flex-col min-h-0">30      <CourseNav course={slug} title={row?.title ?? code} color={row?.color ?? "#1d64b0"} />31      <div className="flex-1">{children}</div>32    </div>33  );34}35